home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Technotools
/
Technotools (Chestnut CD-ROM)(1993).ISO
/
lang_c
/
mc51bugs
/
q32540
< prev
next >
Wrap
Text File
|
1988-07-20
|
2KB
|
58 lines
Q32540 Incorrect Code with /Oal /AL and Nested Loops
C Compiler
5.10 | 5.10
MS-DOS | OS/2
Summary:
The code generated for the following program is incorrect when
compiled with /Oal /AL. When you are looking at the generated code,
the SI register is used in the outer loops to keep track of argc.
However, within the loop, the SI register is corrupted and the loop
will not terminate.
Microsoft has confirmed this to be a problem in Version 5.10. We
are researching this problem and will post new information as it
becomes available.
More information:
The following code reproduces this problem:
#define MAX_PATH_CHARS 80
#define FILE_NAME_SIZE 80
#define incr(i) ++(i)
#define decr(i) --(i)
#define NUL '\0'
char buffer[MAX_PATH_CHARS];
#define USAGE "usage: %s [ -d dir ] [ file ]\n"
int
decode_args (argc, argv)
int argc;
char* *argv;
{
int j;
char* ap;
char dir[MAX_PATH_CHARS];
int last;
while (argc) {
if (argv[0][0] == '-') {
for (ap = *argv + 1; *ap != NUL; incr(ap)) {
decr(argc), incr(argv);
strcpy(dir, *argv);
}
} else
while (j <= FILE_NAME_SIZE && argv[0][j] != NUL) {
buffer[last] = argv[0][j];
incr(last), incr(j);
}
decr(argc), incr(argv);
}
}
Keywords: buglist5.10
Updated 88/07/21 03:19